/*
 * 描述： <描述>
 * 修改人： rain
 * 修改时间： 2016年9月30日
 * 项目： rainhy-auth
 */
package com.rainhy.auth.mock;

import java.util.Date;

import org.joda.time.DateTime;

import com.rainhy.auth.context.AuthItem;
import com.rainhy.auth.context.AuthItemRef;

/**
 * 权限引用
 * 
 * @author rain
 * @version [版本号, 2016年9月30日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class MockAuthItemRef implements AuthItemRef {
    
    /** 主键 */
    private String id;
    
    /** authItem实例 */
    private AuthItem authItem;
    
    /** 根据引用类型而变动(可以是用户的id,code. 或者职位的id,code. 等任何标识型东西) */
    private String authRefId;
    
    /**
     * 权限引用项的类型<br>
     * 利用该类型<br>
     * 实现 人员权限 AUTHREFTYPE_OPERATOR <br>
     * 临时权限 AUTHREFTYPE_OPERATOR_TEMP <br>
     * 角色权限 AUTHREFTYPE_ROLE <br>
     * 职位权限 ... ... <br>
     * 这里用String虽没有int查询快，但能让sql可读性增强
     */
    private String authRefType;
    
    /** 权限引用项生效时间,如果为 null 则没有生效时间(立即生效) */
    private Date effectiveDate;
    
    /** 权限引用项无效时间,如果为 null 则没有无效时间(永久有效) */
    private Date invalidDate;
    
    public MockAuthItemRef(AuthItem authItem, String authRefType, String authRefId) {
        super();
        this.authItem = authItem;
        this.authRefId = authRefId;
        this.authRefType = authRefType;
    }
    
    @Override
    public AuthItem getAuthItem() {
        return this.authItem;
    }
    
    @Override
    public String getAuthRefId() {
        return this.authRefId;
    }
    
    @Override
    public String getAuthRefType() {
        return this.authRefType;
    }
    
    @Override
    public DateTime getEffectiveDate() {
        return this.effectiveDate == null ? null : new DateTime(this.effectiveDate);
    }
    
    /** 主键 */
    @Override
    public String getId() {
        return this.id;
    }
    
    /** 权限引用项无效时间,如果为 null 则没有无效时间(永久有效) */
    @Override
    public DateTime getInvalidDate() {
        return this.invalidDate == null ? null : new DateTime(this.invalidDate);
    }
    
    /** authItem实例 */
    public void setAuthItem(AuthItem authItem) {
        this.authItem = authItem;
    }
    
    /** 根据引用类型而变动(可以是用户的id,code. 或者职位的id,code. 等任何标识型东西) */
    public void setAuthRefId(String authRefId) {
        this.authRefId = authRefId;
    }
    
    /**
     * 权限引用项的类型<br>
     * 利用该类型<br>
     * 实现 人员权限 AUTHREFTYPE_OPERATOR <br>
     * 临时权限 AUTHREFTYPE_OPERATOR_TEMP <br>
     * 角色权限 AUTHREFTYPE_ROLE <br>
     * 职位权限 ... ... <br>
     * 这里用String虽没有int查询快，但能让sql可读性增强
     */
    public void setAuthRefType(String authRefType) {
        this.authRefType = authRefType;
    }
    
    /** 权限引用项生效时间,如果为 null 则没有生效时间(立即生效) */
    public void setEffectiveDate(DateTime effectiveDate) {
        this.effectiveDate = effectiveDate == null ? null : effectiveDate.toDate();
    }
    
    /** 主键 */
    public void setId(String id) {
        this.id = id;
    }
    
    /** 权限引用项无效时间,如果为 null 则没有无效时间(永久有效) */
    public void setInvalidDate(DateTime invalidDate) {
        this.invalidDate = invalidDate == null ? null : invalidDate.toDate();
    }
    
}
